/*
 * MockMsjReceptor.cpp
 *
 *  Created on: 08/02/2010
 *      Author: San Martín, Matías I.
 */

#include "MockMsjReceptor.h"

#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>

using namespace std;

MockMsjReceptor::MockMsjReceptor(bool esAplicacion)
	: _esAplicacion(esAplicacion){
}

MockMsjReceptor::~MockMsjReceptor() {
}

void MockMsjReceptor::registrarPipe(const std::string& nombrePipe,const IdPlaneta& idPlaneta)
{
	if ( (!_esAplicacion) &&
			(mkfifo(nombrePipe.c_str(),0666) == 0 || errno == EEXIST))
	{
		int fd = open (nombrePipe.c_str(),O_WRONLY);
		_mapa[idPlaneta] = fd;
		cout << "Registrado pipe" << endl;
	}
	else
	{
		if (!_esAplicacion)
			perror("No pude registrar el pipe. ");
		else
			cout << "Es aplicacion, no abro el pipe para escritura" << endl;
	}

}

void MockMsjReceptor::enviarMensaje(const Mensaje& msj,const IdPlaneta& idPlaneta)
{
	cout << "envio msj: " << msj.toString() << endl;
	msj.save(_mapa.at(idPlaneta));
}
